"use strict";
// class People {
//     name: string
//     age: number
//     constructor(name:string,age:number){
//         this.name = name
//         this.age = age
//     }
//     sport():string{
//         return `${this.name}会运动`
//     }
// }
// let p = new People('小明',18);
// 类的修饰符 有三种 
// 默认是 public （公共意思）
// protected 保护类型 类里面、子类可以访问 类外面不可以访问
// private	私有类型 类里面可以访问，其他不行
// class Animal {
//     private name: string
//     constructor(name:string){
//         this.name = name
//     }
//     getName():string{
//         return this.name
//     }
// }
// class Dog extends Animal {
//     doing: string
//     constructor(name:string,val:string){
//         super(name)
//         this.doing = val;
//     }
//     getDoing():string {
//       console.log(this.name);
//       return this.doing
//     }
// }
// let d = new Dog('哈士奇','拆家比较牛')
// console.log(d.name); // 哈士奇
// console.log(d.getName());// 哈士奇
// 使用static修饰静态属性
// 静态的方法，或者属性，只能通过 class 类来进行访问，不能通过 实例化的对象访问
// class Animal {
//     name:string
//     static prop: string = '1'
//     constructor(name:string){
//         this.name = name
//     }
//     getName():string{
//         return this.name
//     }
//     static getProp(){
//       console.log(this.prop);
//     }
// }
// console.log(Animal.prop); // 1
// // Animal.getProp();
// let a = new Animal('小狗')
// a.getProp();
// console.log(a.prop); // 属性“prop”在类型“Animal”上不存在
// ts class 类的多态
class Animal {
    constructor(name) {
        this.name = name;
    }
    // 父类定义了一个方法，不去实现
    eat() { }
}
class Dog extends Animal {
    constructor(name) {
        super(name);
    }
    eat() {
        console.log(`${this.name}吃骨头`);
    }
}
let d = new Dog('藏獒');
// let a = new Animal('二哈');
// a.eat();
class Cat extends Animal {
    constructor(name) {
        super(name);
    }
    eat() {
        console.log(`${this.name}吃鱼`);
    }
}
let c = new Cat('布袋猫');
